package com.veepeak.server.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.data.domain.Page;

import java.util.List;

@Data
@ToString
@EqualsAndHashCode
public class PageModel {
    private int draw;//绘制计数器。这个是用来确保Ajax从服务器返回的是对应的（Ajax是异步的，因此返回的顺序是不确定的）。 要求在服务器接收到此参数后再返回
    private int start;//第一条数据的起始位置
    private int length;//告诉服务器每页显示的条数，这个数字会等于返回的 data集合的记录数，可能会大于因为服务器可能没有那么多数据。这个也可能是-1，代表需要返回全部数据
    private long recordsTotal;//数据库里总共记录数
    private long recordsFiltered;//过滤后的记录数
    private String error; //定义一个错误来描述服务器出了问题后的友好提示
    private List<Object> data;
//    private Search search;
//    private List<Object> columns;
//    private List<Object> search;
//    private List<Object> order;

    public PageModel(){}

    public PageModel(int draw,Page page){
        this.draw = draw;
        this.start = page.getNumber();
        this.length = page.getSize();
        this.recordsTotal = page.getTotalElements();
        this.recordsFiltered = page.getTotalElements();
        this.data = page.getContent();
    }

    public int getPage() {
        return this.start / this.length;
    }

}

class Search{
    public String value;
    public String regex;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getRegex() {
        return regex;
    }

    public void setRegex(String regex) {
        this.regex = regex;
    }
}
